﻿/**************************************************************
* Copyright (C) 2022 www.eipflow.com 孙泽伟版权所有(盗版必究)
*
* 作者: 孙泽伟(QQ 1039318332)
* 创建时间: 2022/01/12 22:40:15
* 文件名: 
* 描述: 
* 
* 修改历史
* 修改人：
* 时间：
* 修改说明：
*
**************************************************************/
using EIP.System.Models.Dtos.DataBase;

namespace EIP.System.Controller
{
    /// <summary>
    /// 数据库控制器
    /// </summary>
    public class DataBaseController : BaseSystemController
    {
        #region 构造函数

        private readonly ISystemDataBaseLogic _systemDataBaseLogic;
        private readonly ISystemFileLogic _systemFileLogic;
        /// <summary>
        /// 
        /// </summary>
        /// <param name="systemDataBaseLogic"></param>
        public DataBaseController(ISystemDataBaseLogic systemDataBaseLogic, ISystemFileLogic systemFileLogic)
        {
            _systemDataBaseLogic = systemDataBaseLogic;
            _systemFileLogic = systemFileLogic;
        }

        #endregion

        #region 方法
        /// <summary>
        /// 获取所有应用数据库
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        [CreateBy("孙泽伟")]
        [Remark("应用数据库-方法-列表-获取所有应用数据库", RemarkFrom.System)]
        [Route("/system/database/table/tree")]
        public async Task<ActionResult> FindTableTree()
        {
            return JsonForTree((await _systemDataBaseLogic.FindTableTree()).Data);
        }

        /// <summary>
        /// 获取表空间使用情况
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        [CreateBy("孙泽伟")]
        [Remark("应用数据库-方法-列表-获取表空间使用情况", RemarkFrom.System)]
        [Route("/system/database/spaceused")]
        public async Task<ActionResult> FindDataBaseSpaceused()
        {
            return Ok(await _systemDataBaseLogic.FindDataBaseSpaceused());
        }

        /// <summary>
        /// 获取对应数据库视图信息
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [CreateBy("孙泽伟")]
        [Remark("应用数据库-方法-列表-获取对应数据库表信息", RemarkFrom.System)]
        [Route("/system/database/view")]
        public async Task<ActionResult> FindDataBaseView(IdInput input)
        {
            return Ok(await _systemDataBaseLogic.FindDataBaseView(input));
        }

        /// <summary>
        /// 获取对应数据库视图信息
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [CreateBy("孙泽伟")]
        [Remark("应用数据库-方法-列表-获取对应数据库表信息", RemarkFrom.System)]
        [Route("/system/database/proc")]
        public async Task<ActionResult> FindDataBaseProc(IdInput input)
        {
            return Ok(await _systemDataBaseLogic.FindDataBaseProc(input));
        }
        /// <summary>
        /// 获取对应数据库表信息
        /// </summary>
        /// <returns></returns>
        [HttpPost]
        [CreateBy("孙泽伟")]
        [Remark("应用数据库-方法-列表-获取对应数据库表信息", RemarkFrom.System)]
        [Route("/system/database/table")]
        public async Task<ActionResult> FindDataBaseTable(IdInput input)
        {
            return Ok(await _systemDataBaseLogic.FindDataBaseTable(input));
        }

        /// <summary>
        /// 获取对应表列信息
        /// </summary>
        /// <param name="doubleWayDto"></param>
        /// <returns></returns>
        [HttpPost]
        [CreateBy("孙泽伟")]
        [Remark("应用数据库-方法-列表-获取对应表列信息", RemarkFrom.System)]
        [Route("/system/database/column")]
        public async Task<ActionResult> FindDataBaseColumnsList(SystemDataBaseTableDto doubleWayDto)
        {
            doubleWayDto.Header = Request.Headers["Authorization"];
            return Ok(await _systemDataBaseLogic.FindDataBaseColumns(doubleWayDto));
        }

        #endregion
    }
}